package utils

import (
	"PublicBenefitActivities/config"

	"go.uber.org/zap"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

var DB *gorm.DB

// 初始化数据库连接。
// 该函数根据配置信息建立与数据库的连接，并返回数据库实例。
// 参数:
//
//	logger *zap.Logger - 日志记录器，用于记录初始化过程中的错误信息。
//
// 返回值:
//
//	*gorm.DB - 如果成功连接到数据库，则返回数据库实例；否则返回nil。
func InitDB(logger *zap.Logger) *gorm.DB {
	// 从配置中获取数据库连接字符串。
	dsn := config.Config.GetString("database.dsn")

	// 使用GORM库打开数据库连接。
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		// 如果连接失败，记录错误日志并返回nil。
		logger.Error("Failed to connect to database", zap.Error(err))
		return nil
	}

	// 将数据库实例赋值给全局变量DB，并返回该实例。
	DB = db
	return db
}
